package com.ryl.yomall.product.client;

import com.ryl.yomall.model.product.*;
import com.ryl.yomall.product.client.impl.ProductFeignClientImpl;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Date 12:49
 * @Author ryl
 */
@FeignClient(name = "service-product", fallback = ProductFeignClientImpl.class)
public interface ProductFeignClient {

    /**
     * 根据skuId获取sku信息
     *
     * @param skuId
     * @return
     */
    @GetMapping("/api/product/inner/getSkuInfo/{skuId}")
    SkuInfo getSkuInfo(@PathVariable("skuId") Long skuId);


    /**
     * 通过三级分类id查询分类信息
     * @param category3Id
     * @return
     */
    @GetMapping("/api/product/inner/getBaseCategoryView/{category3Id}")
    BaseCategoryView getBaseCategoryView(@PathVariable("category3Id")Long category3Id);

    /**
     * 获取sku最新价格
     *
     * @param skuId
     * @return
     */
    @GetMapping("/api/product/inner/getPrice/{skuId}")
    BigDecimal getPrice(@PathVariable(value = "skuId") Long skuId);

    /**
     * 根据spuId，skuId 查询销售属性集合
     *
     * @param skuId
     * @param spuId
     * @return
     */
    @GetMapping("/api/product/inner/getSpuSaleAttrAndChecked/{spuId}/{skuId}")
    List<SpuSaleAttr> getSpuSaleAttrAndChecked( @PathVariable("spuId") Long spuId,@PathVariable("skuId") Long skuId);


    /**
     * 根据spuId 查询map 集合属性
     * @param spuId
     * @return
     */
    @GetMapping("/api/product/inner/getSaleAttrValuesBySpu/{spuId}")
    Map getSaleAttrValuesBySpu(@PathVariable("spuId") Long spuId);
    /**
     * 获取首页的三级分类
     */
    @GetMapping("/api/product/inner/getBaseCategoryViewList")
    List<BaseCategoryView> getBaseCategoryViewList();

    /**
     * 获取品牌信息
     */
    @GetMapping("/api/product/inner/baseTrademark/{id}")
    BaseTrademark getBaseTrademark(@PathVariable Long id);
    /**
     * 获取基本属性和属性值
     */
    @GetMapping("/api/product/inner/getBaseAttrInfoAndBaseAttrValue/{skuId}")
    List<SkuAttrValue> getBaseAttrInfoAndBaseAttrValue(@PathVariable Long skuId);
}
